class MoreLikeThisDisabledError(Exception):
    pass


class WorkflowHashNotEqualError(Exception):
    pass


class IsDraftWorkflowError(Exception):
    pass


class WorkflowNotFoundError(Exception):
    pass


class WorkflowIdFormatError(Exception):
    pass


class InvokeRateLimitError(Exception):
    """Raised when rate limit is exceeded for workflow invocations."""

    pass


class QuotaExceededError(ValueError):
    """Raised when billing quota is exceeded for a feature."""

    def __init__(self, feature: str, tenant_id: str, required: int):
        self.feature = feature
        self.tenant_id = tenant_id
        self.required = required
        super().__init__(f"Quota exceeded for feature '{feature}' (tenant: {tenant_id}). Required: {required}")


class TriggerNodeLimitExceededError(ValueError):
    """Raised when trigger node count exceeds the plan limit."""

    def __init__(self, count: int, limit: int):
        self.count = count
        self.limit = limit
        super().__init__(
            f"Trigger node count ({count}) exceeds the limit ({limit}) for your subscription plan. "
            f"Please upgrade your plan or reduce the number of trigger nodes."
        )
